#ifndef __server_H__
#define __server_H__
#include "func.h"
#include "tcp.h"
#include "threadpool.h"

#define BUFFSIZE 1024
#define _100M 104857600
#define _1M   1048576
#define SALT_SIZE 10

//定义路径名分析的返回值
#define FILE_NAME 1
#define DIR_NAME 0
#define WRONG_PATHNAME -1
#define BOTH 2

//定义命令分析的返回值
#define _CDDIR 1
#define _LSDIR 2
#define _MKDIR 3
#define _RMFILE 4
#define _PWDDIR 5
#define _GETFILE 6
#define _PUTFILE 7

//小火车用于接收文件
typedef struct Train_s{
    int lenth;
    char buf[BUFFSIZE];
}Train_t;

//接收文件
char* RecvFile(int connfd);

//发送文件
char* SendFile(char* pathName, int peerFd);
int Sendn(int peerFd, void* buf, int size);

//创建目录
int MkDir( char*, int);   

//改变当前工作目录
int CdDir(char*, int);

//展示目录内容
int LsDir(char*, int, char*);

//展示当前工作目录
int PwdDir(char*, int);

//删除文件或目录
int RmFile(char*, int);  
int OthersLinked(char*);
int DeleteFileOrDir(int);
int RecursiveDelete(int);

//用户注册和登录
int Register(int);
void GenerateSalt(char*);

//分析路径名
int PathnameAnalyse(char*, int, int*); 

//分析命令
int CommandAnalyse(char*, char*);

//发送处理命令之后返回给客户端的信息
void SendFlagOnly(int flag, int peerfd);
void SendFlagAndMsg(int flag, int peerfd, Train_t* train);


#endif
